/**
 * author : xuzongmeng
 * date   : 2018/10/12
 * desc   : 工具类
 */

class StringUtil {
  //  let reg13 = /^1[34578][0-9]{9}$/;
  static isMobile (mobile) {
    return (/^1[34578]\d{9}$/.test(mobile))
  }

  static isEmpty (string) {
    return !(string && string !== '')
  }
  static isNotEmpty (string) {
    return (string && string !== '')
  }
  static isVerifyCode (code) {
    return (/^[0-9]{6}$/.test(code))
  }

  static isPassword (password) {
    return (/^[a-zA-Z0-9]{6,14}$/.test(password))
  }

  static numberIfAZ (c) {
    if (/^[0-9]*$/.test(c)) {
      return Number.parseInt(c)
    }
    var asc = c.charCodeAt(0)
    if (asc >= 65 && asc <= 90) {
      asc -= 65
    } else if (asc >= 97 && asc <= 122) {
      asc -= 97
    } else if (asc >= 48 && asc <= 57) {
      asc -= 48
    } else {
      asc = 0
    }
    return asc
  }

  // 删除所有标签  空格
  static remainStr (item) {
    // 过滤标签
    let temp1 = item.replace(/<[^>]+>/g, '')
    // 过滤&nbsp空格符
    let temp2 = temp1.replace(/&nbsp;/g, '')
    // 过滤空格
    let realStr = temp2.replace(/(^\s*)/g, '')
    return realStr
  }

  static mixMobile (mobile) {
    return mobile.substr(0, 3) + '****' + mobile.substr(mobile.length - 5, 4)
  }

  /**
   *如果超过范围滴字符串显示...
   */
  static shortTitle (value) {
    let string = ''
    if (value.length > 10) {
      string = value.substring(0, 10) + '...'
    } else {
      string = value
    }
    return string
  }

  /**
   *  判断  这个权限在该数组的位置
   * @param arr 数组
   * @param str 字符串
   * @returns {number}
   */
  static indexOfArray (arr, str) {
    let number = 0
    arr.forEach(function (item, index) {
      if (parseInt(str) === parseInt(item.rightId)) {
        number = index
      }
    })
    return number
  }

  // /**
  //  *   一个数组出现在另外一个数组（目标数组）的哪些位置
  //  * @param targetArr 目标对象
  //  * @param array 数组
  //  * @returns {Array} 数组在目标数组中所在位置
  //  */
  // static arrayIndexOfArray (targetArr, array) {
  //   let number = [];
  //   for (let i = 0; i < targetArr.length; i++) {
  //     array.map((ele, index) => {
  //       if (targetArr[i] === ele) {
  //         number.push(i)
  //       }
  //     })
  //   }
  //   return number
  // }

  /**
   *   一个数组出现在另外一个数组（目标数组）的哪些位置
   * @param targetArr 目标对象
   * @param array 数组
   * @returns {Array} 数组在目标数组中所在位置
   */
  static arrayIndexOfArray (targetArr, array) {
    let number = []
    for (let i = 0; i < targetArr.length; i++) {
      array.map((ele, index) => {
        if (targetArr[i].rightId === ele.rightId) {
          number.push(i)
        }
      })
    }
    return number
  }

  /**
   *  一个对象在该数组的位置
   * @param arr 数组对象
   * @param obj 对象
   * @returns {Array} 对象在数组中所在位置
   */
  static objectIndexOfArray (arr, obj) {
    let number = 0
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] === obj) {
        number = i
      }
    }
    return number
  }

  /**
   * 获取一个随机验证码
   */
  static getRandomVerCode () {
    let verCode = ''
    let verCodeLength = 5
    let codeArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
      'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    for (let i = 0; i < verCodeLength; i++) {
      let index = Math.floor(Math.random() * 36)
      verCode += codeArray[index]
    }
    return verCode
  }

  /**
   *
   * @param obj1
   * @param obj2
   * @returns {boolean}
   */
  static containsEqual (obj1, obj2) {
    if (obj1 !== null && obj2 !== null) {
      if (obj1 === obj2) {
        return true
      } else {
        return false
      }
    }
  }

  /**
   * 一个数组是否包含了这个obj
   * @param arr
   * @param obj
   * @returns {boolean}
   */
  static contains (arr, obj) {
    var i = arr.length
    while (i--) {
      if (arr[i] === obj) {
        return true
      }
    }
    return false
  }

  /**
   * 分割例如 data:"20180120" 格式的字符串
   */
  static splitDataString (str) {
    let str1 = str.substring(0, 4)
    let str2 = str.substring(4, 6)
    let str3 = str.substring(6, 8)
    let strData = str1 + '-' + str2 + '-' + str3
    return strData
  }

  /**
   * 给定 '6:8，6:6 ' 形式 裁剪几排几座
   * @returns {Array}
   */
  static seatList (list) {
    if (list) {
      return list.split('|').map(data => {
        return data.split(':')[0] + '排' + data.split(':')[1] + '列'
      })
    }
    return []
  }

  /**  判断给定的str是否包含无锡券 包含返回 true  否则false
   * @param str
   * @param targetStr
   * @returns {boolean}
   */
  static isContainsStr (str) {
    var reg = RegExp(/WxZzQ10YgYQ/)
    if (str.match(reg)) {
      // 包含
      return true
    } else {
      return false
    }
  }
}

export default StringUtil
